package org.gwc.jsp;

import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping(value = "jsp")
public class JspController {
    /**
     * 快速查找视图
     *     1、方法的返回值是字符串类型
     *     2、不能添加@ResponseBody，直接返回给字符串的浏览器，不找视图，不走视图解析器
     *     3、返回值，对应中间的视图名称即可
     * @param request
     * @return
     */
    @GetMapping(value = "index")
    public String index (HttpServletRequest request){
        request.setAttribute("data","hello jsp!!!");
        System.out.println("JspController.index");
        // 会根据index去找对应的index.jsp文件
        return "index";
    }

    /**
     * 转发：只能是项目下的资源，不改变浏览器显示的网址
     * 1、方法的返回值写成字符串
     * 2、不能添加@ResponseBody注解
     * 3、返回的字符串 forward:/转发地址
     * @return
     */
    @GetMapping("forward")
    public String forward(){
        System.out.println("JspController.forward");
        return "forward:/jsp/index";
    }

    /**
     * 重定向：可以是项目内或项目外的资源,浏览器地址会改变
     * 1、方法的返回值写成字符串
     * 2、不能添加@ResponseBody注解
     * 3、返回字符串前面 redirect:/重定向地址
     */
    @GetMapping(value = "redirect")
    public String redirect(){
        System.out.println("JspController.redirect");
        return "redirect:/jsp/index";
    }

    // 重定向外部网站
    @GetMapping(value = "redirectBaidu")
    public String redirectBaidu(){
        System.out.println("JspController.redirect");
        return "redirect:http://www.baidu.com";
    }
    /**
     * 转发和重定向的路径细节，假设根路径是/springmvc
     * 1、不适用springMVC,使用request,response
     *      转发是项目下的资源跳转，路径：项目的下的地址 /jsp/index 忽略 /springmvc
     *      重定向项目下的资源可以是项目外的地址 重定向属于二次请求 路径：全地址 /springmvc/jsp/index
     * 2、使用springmvc路径语法：
     *      ”forward:路径 | redirect:路径 重定向也不需要写项目的根路径！ /jsp/index
     */
}
